package br.com.aplic.teste.integracao.entidade;

import java.sql.Timestamp;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import br.com.aplic.teste.integracao.Entidade;


@Entity
@Table(name = "tb_centro_custo")
public class CentroCusto implements Entidade{

	public static final String strNomCentroCusto = "nomCentroCusto";
	public static final String strIndTipoCentroCusto = "indTipoCentroCusto";
	public static final String strCentroCustoPai = "centroCustoPai";
	public static final String strId = "id";
	public static final String strDthExclusao = "dthExclusao";
	public static final String strIndStatus = "indStatus";
	public static final String strCodPrincipal = "codPrincipal";
	public static final String strIndOrigem = "indOrigem";
	public static final String strIndAmbos = "indAmbos";
	public static final String strIndConciliacao = "indConciliacao";
	public static final String strQtdHorasBloqueioConciliacao = "qtdHorasBloqueioConciliacao";
	public static final String strUsuarioPerfilConciliaBloqueado = "usuarioPerfilConciliaBloqueado";

	public static final String TIPO_CENTRO_CUSTO_ANALITICO = "A";
	public static final String TIPO_CENTRO_CUSTO_SINTETICO = "S"; // Agrupador, nao pode ter movimentacao
	
	public static final String TIPO_IND_AMBOS_NAO = "N"; 
	public static final String TIPO_IND_AMBOS_SIM = "S"; // Indica se o centro de custo pode receber tanto lançamentos de crédito e débito.
	
	public static final String ORIGEM_RECEITA = "R"; // Credito
	public static final String ORIGEM_DESPESA = "D"; // Debito
	
	public static final String STATUS_ATIVO = "A";
	public static final String STATUS_INATIVO = "I";
	
	public static final String IND_CONCILIACAO_NAO = "N";
	public static final String IND_CONCILIACAO_SIM = "S";
	
	public static final Long ID_CENTRO_CUSTO_RECEITA_PROVISORIA = 4L;
	public static final Long ID_CENTRO_CUSTO_DESPESA_PROVISORIA = 5L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_centro_custo_pai")
	private CentroCusto centroCustoPai;
	@Column(name = "nom_centro_custo", nullable = false)
	private String nomCentroCusto;

	@Column(name = "ind_tipo")
	private String indTipoCentroCusto;
	
	@Column(name = "ind_ambos")
	private String indAmbos;

	@Column(name = "ind_status")
	private String indStatus;

	@Column(name = "ind_Origem")
	private String indOrigem;
	
	@Column(name = "ind_conciliacao")
	private String indConciliacao;
	
	@Column(name = "dth_exclusao")
	private Timestamp dthExclusao;

	@Column(name = "cod_principal")
	private String codPrincipal;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public CentroCusto getCentroCustoPai() {
		return centroCustoPai;
	}

	public void setCentroCustoPai(CentroCusto centroCustoPai) {
		this.centroCustoPai = centroCustoPai;
	}

	public String getNomCentroCusto() {
		return nomCentroCusto;
	}

	public void setNomCentroCusto(String nomCentroCusto) {
		this.nomCentroCusto = nomCentroCusto;
	}

	public String getIndTipoCentroCusto() {
		return indTipoCentroCusto;
	}

	public void setIndTipoCentroCusto(String indTipoCentroCusto) {
		this.indTipoCentroCusto = indTipoCentroCusto;
	}

	public String getIndAmbos() {
		return indAmbos;
	}

	public void setIndAmbos(String indAmbos) {
		this.indAmbos = indAmbos;
	}

	public String getIndStatus() {
		return indStatus;
	}

	public void setIndStatus(String indStatus) {
		this.indStatus = indStatus;
	}

	public String getIndOrigem() {
		return indOrigem;
	}

	public void setIndOrigem(String indOrigem) {
		this.indOrigem = indOrigem;
	}

	public String getIndConciliacao() {
		return indConciliacao;
	}

	public void setIndConciliacao(String indConciliacao) {
		this.indConciliacao = indConciliacao;
	}

	public Timestamp getDthExclusao() {
		return dthExclusao;
	}

	public void setDthExclusao(Timestamp dthExclusao) {
		this.dthExclusao = dthExclusao;
	}

	public String getCodPrincipal() {
		return codPrincipal;
	}

	public void setCodPrincipal(String codPrincipal) {
		this.codPrincipal = codPrincipal;
	}
	
}